SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TCMOVI_CAJA_D05]          
/*-------------------------------------------------------*/          
/*---Empresa              : OFISIS S.A.                --*/          
/*---Cliente              : OFISIS                 --*/          
/*---Sistema              : Tesoreria                  --*/          
/*---M÷dulo               : Empresa                    --*/          
/*---Programa             : Borrado de Operaci¸n       --*/          
/*---                       Movimiento Caja (Egresos)  --*/          
/*---                       Transferencia de Caja a    --*/          
/*---                       Bancos                     --*/          
/*---Script               : tcmovi_b.sql               --*/          
/*---Nombre SP            : SP_TCMOVI_CAJA_D05         --*/          
/*---Desarrollado por     : Javier Flores A.           --*/          
/*---Fecha Creaci÷n       : 03/07/1999                 --*/          
/*---Base Datos           : Microsoft Sql Server       --*/          
/*---Versi÷n              : 7.0                        --*/          
/*---Invoca a SP          :                            --*/          
/*-------------------------------------------------------*/          
          
/*-------------------------------------------------------*/            
/*---ModIficado 1 por     :Maribel Julca Rodriguez     --*/            
/*---Fecha ModIficaci,n   :22/01/2005                  --*/             
/*---Detalle ModIficaci,n :ingreso de campos CO_USUA_CREA, CO_USUA_MODI --*/            
/*-------------------------------------------------------*/            
/*---Modificado 2 por     : Carlos Marquez Escobar       --*/      
/*---Fecha Modificaci÷n   : 16/03/2010                   --*/      
/*---Detalle Modificaci÷n : Logica de Periodo EXTORNO  --*/      
/*---------------------------------------------------------*/     
/*-------------------------------------------------------*/            
/*---Modificado 3 por     : Guido Loayza Silva           --*/      
/*---Fecha Modificaci÷n   : 16/03/2010                   --*/      
/*---Detalle Modificaci÷n : Se agrego Logica para Bancos --*/      
/*---------------------------------------------------------*/     
/*-------------------------------------------------------*/          
/*---Comentarios                                       --*/          
/*---                                                  --*/          
/*---                                                  --*/          
/*-------------------------------------------------------*/          
          
/*-------------------------------------------------------*/          
/*---Drop Proc SP_TCMOVI_CAJA_D05                      --*/          
/*---Grant all on SP_TCMOVI_CAJA_D05 to public         --*/           
/*---SP_TCMOVI_CAJA_D05                                --*/          
/*-------------------------------------------------------*/          
 @ISCO_EMPR TD_VC_002,           
 @ISCO_USUA_MODI TD_VC_008_USUA,          
 @ISCO_CAJA TD_VC_008,           
 @ISAA_CAJA TD_VC_004,           
 @ISMM_CAJA TD_VC_002,           
 @ISTI_MOVI TD_VC_001,            
 @ISNU_COMP_CAJA TD_VC_008,           
 @ISCO_TIPO_OPER TD_VC_003,           
 @INIM_MOVI TD_NU_016_004,          
 @IDFE_ANUL TD_DT_001,          
 @ISDE_OBSE TD_VC_100,          
 @ISNU_SOLI TD_VC_010          
 as          
          
 Declare          
   @CNIM_CONV      TD_NU_016_004,          
   @CSCO_EMPR_DEST TD_VC_003,          
   @CSCO_BANC_DEST TD_VC_003,          
   @CSNU_CNTA_DEST TD_VC_020,          
   @CSNU_COMP_DEST TD_VC_008,          
   @CSAA_BNCO_DEST TD_VC_004,           
   @CSMM_BNCO_DEST TD_VC_002,          
   @CSTI_MOVI_DEST TD_VC_001,          
   @CSCO_TIPO_OPER TD_VC_003,  
   @CSCO_UNID_CONC TD_VC_020,           
   @VSCO_TIPO_INAN TD_VC_003,          
   @VSCO_TIPO_EGAN TD_VC_003,             
   @VSST_GEAS_ANUL TD_VC_001,          
   @VSCO_TIPO_OPE1 TD_VC_003,          
   @VSCO_TIPO_OPE2 TD_VC_003,      
      
/* a) Variables de extorno */            
 @VSCO_UNID_CONC TD_VC_003,          
 @VDFE_OPER  TD_DT_001,              
 @OSNU_ASTO  TD_VC_010,                
 @VSST_INTE_BACH TD_VC_001,            
 @VSST_ASTO_RESU TD_VC_001,           
 @VSTI_OPNI_CARG TD_VC_001,          
 @VSTI_OPNI_ABON TD_VC_001               
          
 BEGIN TRAN SP_TCMOVI_CAJA_D05          
          
   SELECT @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSCO_TIPO_EGAN = CO_TIPO_OPEG, @VSST_GEAS_ANUL = ST_GEAS_ANUL,      
          @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER , @VSST_INTE_BACH = ST_INTE_BACH            
   FROM   TMPARA_TESO           
   WHERE  CO_EMPR = @ISCO_EMPR          
          
   If @VSST_GEAS_ANUL = 'N'          
      Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_EGAN          
   Else              
     Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER          
      
-- Se optiene la fecha de operacion para --E X T O R N O--  --         
   Select @VDFE_OPER = FE_OPER,            
          @VSCO_UNID_CONC = CO_UNID_CONC            
   From   TCMOVI_CAJA                
   Where  CO_EMPR = @ISCO_EMPR                
         And    CO_CAJA = @ISCO_CAJA                
         And    AA_CAJA = @ISAA_CAJA                
         And    MM_CAJA = @ISMM_CAJA                
         And    TI_MOVI = @ISTI_MOVI                
         And    NU_COMP_CAJA = @ISNU_COMP_CAJA            
          
-- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --         
           
    --If  @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL ) -- Logica EXTORNO sustituida     
 If  (Year(@VDFE_OPER) * 100 + Month(@VDFE_OPER)) < (Year(@IDFE_ANUL) * 100 + Month(@IDFE_ANUL))         
      
  Update  TCMOVI_CAJA          
  Set     TI_SITU = 'EXT',           
    CO_TIPO_OPER = @VSCO_TIPO_OPE1,          
    DE_OBSE = @ISDE_OBSE,          
    CO_USUA_MODI = @ISCO_USUA_MODI,          
    FE_USUA_MODI = GETDATE()          
  Where   CO_EMPR = @ISCO_EMPR            
  And     CO_CAJA = @ISCO_CAJA          
  And     AA_CAJA = @ISAA_CAJA          
  And     MM_CAJA = @ISMM_CAJA          
  And     TI_MOVI = @ISTI_MOVI          
  And     NU_COMP_CAJA = @ISNU_COMP_CAJA          
       
 Else      
       
  Update  TCMOVI_CAJA          
  Set     TI_SITU = 'ANU',           
    CO_TIPO_OPER = @VSCO_TIPO_OPE1,          
    DE_OBSE = @ISDE_OBSE,          
    CO_USUA_MODI = @ISCO_USUA_MODI,          
    FE_USUA_MODI = GETDATE()          
  Where   CO_EMPR = @ISCO_EMPR            
  And     CO_CAJA = @ISCO_CAJA          
  And     AA_CAJA = @ISAA_CAJA          
  And     MM_CAJA = @ISMM_CAJA          
  And     TI_MOVI = @ISTI_MOVI          
  And     NU_COMP_CAJA = @ISNU_COMP_CAJA          
          
    If @@error <> 0          
       Begin          
         Rollback tran          
         Return          
       End          
      
      
/**-----Verifica si se genera asientos Resumidos ------*/               
  Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))                    
  From   TMOPRC_RESU t1 , TDTIPO_OPER t2                    
  Where  t2.CO_EMPR = @ISCO_EMPR And                    
  t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And                    
  t1.CO_EMPR = t2.CO_EMPR And                    
  t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB               
             
 /**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/               
  If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND              
     @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And              
    (Year(@VDFE_OPER) * 100 + Month(@VDFE_OPER)) < (Year(@IDFE_ANUL) * 100 + Month(@IDFE_ANUL))  -- Logica EXTORNO Cambiada              
  Begin              
 /*-----Optiene el Numero de Asiento -----*/                  
    EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @VSCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT                
    IF (@@ERROR != 0)                    
    Begin                
      RollBack Tran  SP_TTAMAR_NCCA_D01              
      Return                
    End   
             
  End                    
 /**/             
          
    /* Actualizando la Tabla de Solicitudes a Caja a Situaci©n APROBADAS */          
          
    Update TMSOLI_CABA          
    Set TI_SITU = 'APR', FE_LIQU = NULL,           
        CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()                   
    Where CO_EMPR = @ISCO_EMPR          
    And   NU_SOLI = @ISNU_SOLI          
          
    If @@error <> 0          
       Begin          
         rollback tran          
         return          
       End            
          
    Declare CU_TCMOVI_CAJA_D05_1 Cursor          
    For          
    Select CO_EMPR_DEST, CO_BANC_DEST, NU_CNTA_DEST, AA_BNCO_DEST, MM_BNCO_DEST, TI_MOVI_DEST,          
           NU_COMP_DEST, IM_CONV, CO_TIPO_OPER,CO_UNID_CONC          
    From   TDMOVI_CATB          
    Where   CO_EMPR = @ISCO_EMPR            
    And     CO_CAJA = @ISCO_CAJA          
    And     AA_CAJA = @ISAA_CAJA          
    And     MM_CAJA = @ISMM_CAJA          
    And     TI_MOVI = @ISTI_MOVI          
    And     NU_COMP_CAJA = @ISNU_COMP_CAJA          
          
    
    Open CU_TCMOVI_CAJA_D05_1          
    Fetch CU_TCMOVI_CAJA_D05_1 into @CSCO_EMPR_DEST, @CSCO_BANC_DEST, @CSNU_CNTA_DEST, @CSAA_BNCO_DEST,           
    @CSMM_BNCO_DEST, @CSTI_MOVI_DEST, @CSNU_COMP_DEST, @CNIM_CONV, @CSCO_TIPO_OPER, @CSCO_UNID_CONC         
          
    While (@@FETCH_STATUS = 0)          
      Begin          
        If (@@FETCH_STATUS < 0)          
           Begin          
      RAISERROR 20001 'FIN DE ARCHIVO'          
             Close CU_TCMOVI_CAJA_D05_1          
      Deallocate CU_TCMOVI_CAJA_D05_1          
             Rollback tran          
      Return          
           End          
          
 If @VSST_GEAS_ANUL = 'N'          
           Select @VSCO_TIPO_OPE2 = @VSCO_TIPO_INAN          
        Else              
      Select @VSCO_TIPO_OPE2 = @CSCO_TIPO_OPER          
          
-- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --         
           
      
  /* If  @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )    */    
 /* Falto Aplicar Nueva Logica */    
  If  (Year(@VDFE_OPER) * 100 + Month(@VDFE_OPER)) < (Year(@IDFE_ANUL) * 100 + Month(@IDFE_ANUL))         
      
   Update  TCMOVI_BANC          
        Set     TI_SITU = 'EXT',           
                CO_TIPO_OPER = @VSCO_TIPO_OPE2,          
                DE_OBSE = @ISDE_OBSE+' '+DE_OBSE,          
                CO_USUA_MODI = @ISCO_USUA_MODI,          
                FE_USUA_MODI = GETDATE()          
        Where   CO_EMPR = @CSCO_EMPR_DEST    
  And  CO_UNID_CONC = @CSCO_UNID_CONC          
        And     CO_BANC = @CSCO_BANC_DEST          
        And     NU_CNTA_BANC = @CSNU_CNTA_DEST          
        And     AA_BNCO = @CSAA_BNCO_DEST          
        And     MM_BNCO = @CSMM_BNCO_DEST          
        And     TI_MOVI_BANC = @CSTI_MOVI_DEST          
        And     NU_COMP_BANC = @CSNU_COMP_DEST   
            
      
   Else      
        Update  TCMOVI_BANC          
        Set     TI_SITU = 'ANU',           
                CO_TIPO_OPER = @VSCO_TIPO_OPE2,          
                DE_OBSE = @ISDE_OBSE+' '+DE_OBSE,          
                CO_USUA_MODI = @ISCO_USUA_MODI,          
                FE_USUA_MODI = GETDATE()          
        Where   CO_EMPR = @CSCO_EMPR_DEST    
  And  CO_UNID_CONC = @CSCO_UNID_CONC         
        And     CO_BANC = @CSCO_BANC_DEST          
        And     NU_CNTA_BANC = @CSNU_CNTA_DEST          
        And     AA_BNCO = @CSAA_BNCO_DEST          
        And     MM_BNCO = @CSMM_BNCO_DEST          
        And     TI_MOVI_BANC = @CSTI_MOVI_DEST          
        And     NU_COMP_BANC = @CSNU_COMP_DEST    
          
          
        If @@error <> 0          
           Begin          
             Close CU_TCMOVI_CAJA_D05_1          
             Deallocate CU_TCMOVI_CAJA_D05_1          
             rollback tran          
      return          
           End            
           
          
       UPDATE TDMOVI_CATB SET CO_TIPO_OPER = @VSCO_TIPO_OPE2          
       WHERE CURRENT OF CU_TCMOVI_CAJA_D05_1          
          
       Insert into TTBANC_ANUL (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC,           
       CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC)          
       Values (@CSCO_EMPR_DEST, @CSCO_BANC_DEST, @CSNU_CNTA_DEST, @CSAA_BNCO_DEST, @CSMM_BNCO_DEST, @CSTI_MOVI_DEST, @CSNU_COMP_DEST,           
               @VSCO_TIPO_OPE2,  @IDFE_ANUL, @OSNU_ASTO, 'N', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(),@CSCO_UNID_CONC )          
          
       If @@error <> 0          
          Begin          
        Close CU_TCMOVI_CAJA_D05_1          
            Deallocate CU_TCMOVI_CAJA_D05_1          
            Rollback tran          
     Return          
          End          
          
       Fetch CU_TCMOVI_CAJA_D05_1 into @CSCO_EMPR_DEST, @CSCO_BANC_DEST, @CSNU_CNTA_DEST, @CSAA_BNCO_DEST,           
       @CSMM_BNCO_DEST, @CSTI_MOVI_DEST, @CSNU_COMP_DEST, @CNIM_CONV, @CSCO_TIPO_OPER, @CSCO_UNID_CONC         
          
    End           
          
    Close CU_TCMOVI_CAJA_D05_1          
    Deallocate CU_TCMOVI_CAJA_D05_1         
      
      
          
    Insert into TTCAJA_ANUL (CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,           
    CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)          
    Values (@ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI, @ISNU_COMP_CAJA,           
            @VSCO_TIPO_OPE1,  @IDFE_ANUL, @OSNU_ASTO, 'N', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())          
          
    If @@error <> 0          
       Begin          
         Rollback tran          
         Return          
       End          
                
 Commit Tran          
          
/*------------------------ Fin ------------------------------*/ 
GO
